home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / writeback.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  118 lines

  1. /*
  2.  * include/linux/writeback.h.
  3.  */
  4. #ifndef WRITEBACK_H
  5. #define WRITEBACK_H
  6.  
  7. struct backing_dev_info;
  8.  
  9. extern spinlock_t inode_lock;
  10. extern struct list_head inode_in_use;
  11. extern struct list_head inode_unused;
  12.  
  13. /*
  14.  * Yes, writeback.h requires sched.h
  15.  * No, sched.h is not included from here.
  16.  */
  17. static inline int current_is_pdflush(void)
  18. {
  19.     return current->flags & PF_FLUSHER;
  20. }
  21.  
  22. /*
  23.  * fs/fs-writeback.c
  24.  */
  25. enum writeback_sync_modes {
  26.     WB_SYNC_NONE,    /* Don't wait on anything */
  27.     WB_SYNC_ALL,    /* Wait on every mapping */
  28.     WB_SYNC_HOLD,    /* Hold the inode on sb_dirty for sys_sync() */
  29. };
  30.  
  31. /*
  32.  * A control structure which tells the writeback code what to do.  These are
  33.  * always on the stack, and hence need no locking.  They are always initialised
  34.  * in a manner such that unspecified fields are set to zero.
  35.  */
  36. struct writeback_control {
  37.     struct backing_dev_info *bdi;    /* If !NULL, only write back this
  38.                        queue */
  39.     enum writeback_sync_modes sync_mode;
  40.     unsigned long *older_than_this;    /* If !NULL, only write back inodes
  41.                        older than this */
  42.     long nr_to_write;        /* Write this many pages, and decrement
  43.                        this for each page written */
  44.     long pages_skipped;        /* Pages which were not written */
  45.  
  46.     /*
  47.      * For a_ops->writepages(): is start or end are non-zero then this is
  48.      * a hint that the filesystem need only write out the pages inside that
  49.      * byterange.  The byte at `end' is included in the writeout request.
  50.      */
  51.     loff_t start;
  52.     loff_t end;
  53.  
  54.     unsigned nonblocking:1;            /* Don't get stuck on request queues */
  55.     unsigned encountered_congestion:1;    /* An output: a queue is full */
  56.     unsigned for_kupdate:1;            /* A kupdate writeback */
  57.     unsigned for_reclaim:1;            /* Invoked from the page allocator */
  58. };
  59.  
  60. /*
  61.  * ->writepage() return values (make these much larger than a pagesize, in
  62.  * case some fs is returning number-of-bytes-written from writepage)
  63.  */
  64. #define WRITEPAGE_ACTIVATE    0x80000    /* IO was not started: activate page */
  65.  
  66. /*
  67.  * fs/fs-writeback.c
  68.  */    
  69. void writeback_inodes(struct writeback_control *wbc);
  70. void wake_up_inode(struct inode *inode);
  71. int inode_wait(void *);
  72. void sync_inodes_sb(struct super_block *, int wait);
  73. void sync_inodes(int wait);
  74.  
  75. /* writeback.h requires fs.h; it, too, is not included from here. */
  76. static inline void wait_on_inode(struct inode *inode)
  77. {
  78.     might_sleep();
  79.     wait_on_bit(&inode->i_state, __I_LOCK, inode_wait,
  80.                             TASK_UNINTERRUPTIBLE);
  81. }
  82.  
  83. /*
  84.  * mm/page-writeback.c
  85.  */
  86. int wakeup_bdflush(long nr_pages);
  87. void laptop_io_completion(void);
  88. void laptop_sync_completion(void);
  89.  
  90. /* These are exported to sysctl. */
  91. extern int dirty_background_ratio;
  92. extern int vm_dirty_ratio;
  93. extern int dirty_writeback_centisecs;
  94. extern int dirty_expire_centisecs;
  95. extern int block_dump;
  96. extern int laptop_mode;
  97.  
  98. struct ctl_table;
  99. struct file;
  100. int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *,
  101.                       void __user *, size_t *, loff_t *);
  102.  
  103. void page_writeback_init(void);
  104. void balance_dirty_pages_ratelimited(struct address_space *mapping);
  105. int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0);
  106. int do_writepages(struct address_space *mapping, struct writeback_control *wbc);
  107. int sync_page_range(struct inode *inode, struct address_space *mapping,
  108.             loff_t pos, size_t count);
  109. int sync_page_range_nolock(struct inode *inode, struct address_space
  110.         *mapping, loff_t pos, size_t count);
  111.  
  112. /* pdflush.c */
  113. extern int nr_pdflush_threads;    /* Global so it can be exported to sysctl
  114.                    read-only. */
  115.  
  116.  
  117. #endif        /* WRITEBACK_H */
  118.